model;
{
b.clu[1:na] ~ car.normal(mapa[],weia[],numa[],tau.clu);
b.coo[1:nc] ~ car.normal(mapc[],weic[],numc[],tau.coo);

for (i in 1:na) {
for (j in 1:nc) {
oss[i,j]        ~  dpois(lambda[i,j]);
log(lambda[i,j])  <- log(att[i,j])+alpha+b.clu[i]+b.ete[i]+b.coo[j]+eff.int[i,j];

rr[i,j]           <- lambda[i,j]/att[i,j];
devi[i,j]    <- oss[i,j]*(log((oss[i,j]+0.05)/(rr[i,j]*(att[i,j]+0.05))))-oss[i,j]+att[i,j]*rr[i,j];
}

b.ete[i]        ~  dnorm(0.00,tau.ete);
nadj.clu[i]          <- off[i+1]-off[i];

b.int.bar[i,1]       <- b.int[i,2]+
                          mean(adj.int[off[i]+1:off[i+1],1])-
                          mean(adj.int[off[i]+1:off[i+1],2]);
nadj.int[i,1]        <- 1.0*nadj.clu[i];

for (j in 2:nc-1){
b.int.bar[i,j]     <- (b.int[i,j-1]+b.int[i,j+1])/2+
                        mean(adj.int[off[i]+1:off[i+1],j])-
                          (mean(adj.int[off[i]+1:off[i+1],j-1])+
                          mean(adj.int[off[i]+1:off[i+1],j+1]))/2;
    nadj.int[i,j]      <-2.0*nadj.clu[i];
  }

  b.int.bar[i,nc]      <- b.int[i,nc-1]+
                          mean(adj.int[off[i]+1:off[i+1],nc])-
                          mean(adj.int[off[i]+1:off[i+1],nc-1]);
  nadj.int[i,nc]       <- 1.0*nadj.clu[i];

  for (j in 1:nc){
    b.int.prec[i,j]    <- nadj.int[i,j] * tau.int;
  }

  for (j in 1:nc){
    b.int[i,j]         ~ dnorm(b.int.bar[i,j],b.int.prec[i,j]);
    eff.int[i,j]       <-b.int[i,j]-b.int[i,1];
    tau.int.like[i,j]  <- nadj.int[i,j] * b.int[i,j] *
                          (b.int[i,j] - b.int.bar[i,j])
  }

}

for (i in 1:adj)  {
 adj.clu[i]        <- b.clu[map[i]];
}

for (i in 1:adj)  {
for (j in 1:nc)  {
 adj.int[i,j]        <- b.int[map[i],j];
}}


deviance <- 2*(sum(devi[,]));
alpha           ~ dflat();
tau.ete         ~ dgamma(1.0E-3,1.0E-3);
tau.clu         ~ dgamma(nu.clu,sf.clu);
tau.coo         ~ dgamma(nu.coo,sf.coo);
l.int            <- nu.int + sum(tau.int.like[,])/2;
r.int            <- sf.int + (na)*(nc)/2;
tau.int           ~ dgamma(r.int,l.int);
}
